import adminListViews from "$v/adminList"

import axios from 'axios'
import {
  addAdminRequest,
  adminListRequest,
  deleteAdminRequest,
  isLoginRequest
} from "$a/admin"

const showAdminList = async (res) => {
  //只要进入当前路由函数，则立马开始查询所有的管理员信息
  let adminListResult = null;
  try {
    adminListResult = await adminListRequest();
    // console.log(adminListResult);
  } catch (e) {
    alert("获取管理员列表异常:" + e.message)
    //判断是否是权限异常
    if (!e.isLogin) {
      return router.go("/login");
    }

  }
  //渲染二级路由视图
  res.render(adminListViews({
    adminList: adminListResult
  }));
}
export default async (req, res) => {
  //路由切换的时候验证登录
  try {
    await isLoginRequest();
  } catch (e) {
    //请求异常后提示用户
    alert("有异常" + e.message)

    //判断是否是权限异常
    if (!e.isLogin) {
      return router.go("/login");
    }
  }


  //展示管理员列表 传入res作为参数使用
  //注意!!!一定书写await 因为只有这个异步函数全部执行完成 才会渲染页面,所以我们必须等待他执行完成
  await showAdminList(res)

  //获取保存按钮 给它添加点击事件
  // const oSaveAdminBtn = document.getElementById('saveAdminBtn');
  document.onclick = async function (e) {
    if (e.target.id === "saveAdminBtn") {
      //可以通过表单元素的name属性获取某个元素
      //获取输入的值  trim 方法可以去除空格
      const adminNameValue = document.adminForm.adminName.value.trim();
      const passwordValue = document.adminForm.passWord.value.trim();
      const rePasswordValue = document.adminForm.rePassWord.value.trim();
      //判断是否为空
      if (!adminNameValue || !passwordValue || !rePasswordValue) {
        return alert('输入不能为空')
      }
      //判断密码是否一致
      if (passwordValue.value !== rePasswordValue.value) {
        return alert("密码请保持一致")
      }
      //向后端发送添加管理员请求
      try {
        const re = await addAdminRequest({
          adminName: adminNameValue,
          password: passwordValue,
          regTime: new Date().toLocaleString()
        })
        alert("添加成功")
        //添加成功关闭窗口
        document.getElementById('closSill').click();
        //点击清空输入内容
        document.adminForm.reset();
        //重新渲染页面
        showAdminList(res);
      } catch (e) {
        //请求异常后提示用户
        alert("有异常" + e.message)
        //判断是否是权限异常
        if (!e.isLogin) {
          return router.go("/login");
        }

        //有异常清空输入内容
        document.adminForm.reset();
      }
    }
    if (e.target.nodeName === "BUTTON" && e.target.parentNode.nodeName === "TD") {
      //获取当前删除按钮对应的adminName(在生成删除按钮的时候 就把自定义属性设置上去)
      const adminName = e.target.dataset.deletename;
      try {
        await deleteAdminRequest(adminName);
        alert("删除管理员" + adminName + "成功")

        //删除成功 重新渲染视图
        showAdminList(res);
      } catch (e) {
        alert("删除管理员" + adminName + "异常")
        //判断是否是权限异常
        if (!e.isLogin) {
          return router.go("/login");
        }
      }
    }

  }

}